/*******************************************************************************
 * 版权：北京润尼尔网络科技有限公司，保留所有版权<br>
 * 版本：v1.0.0<br>
 * 文件：PmsModel.js<br>
 * 日期：2017年10月11日<br>
 * 作者: 王中山<br>
 * 功能：动态元件模型<br>
 * 
 * 修改记录：<br>
 * 日期 描述 更新功能<br>
 ******************************************************************************/

window.makeNamespace(window,"Rainier.UI.V2");

/**
 * 类型名称：Rainier.UI.V2.PmsModel<br>
 * 类型功能：通用器件模型<br>
 */
Rainier.UI.V2.PmsModel = Rainier.UI.V2.DeviceModel.extend({
    
    NAME : "Rainier.UI.V2.PmsModel",
    
    /**
     * 函数名称：Rainier.UI.V2.PmsModel.init<br>
     * 函数功能：构造函数<br>
     * 参数输入:property属性对象<br>
     * 异常信息：无<br>
     */
    init : function(property){
        var dummy = jQuery.extend(true,{},property);
        this._super(dummy?property:{});
        this.currentState = {};
    },
    
    /**
    
     * 函数名称：Rainier.UI.V2.DeviceModel.tranlateToSpice<br>
     * 函数功能：将元件翻译成spice语句<br>
     * 参数输入：无<br>
     * 参数输出：无<br>
     * 函数返回：sSpice:string<br>
     * 异常信息：无<br>
     */
    tranlateToSpice : function(){
        var matLab = this._super();
        var result = '';
        var variable = 'var_' + this.getProperty().modelProperty.label;
        var bOut = true;
        var bEnd = true;
        if (matLab.indexOf('@')) {
            var index = matLab.indexOf('@')
            while(index >= 0){
                var spaceIndex  = matLab.indexOf('@',index+1);
                var replaceStr  = matLab.substr(index,spaceIndex-index+1);
                var portId      = matLab.substr(index+1,spaceIndex-index-1);
                var reg=new RegExp("("+replaceStr+")","g");  

                var unit = this.getConnectModelByPortId(portId);
                var sources  = unit.sources;
                if (sources.length > 0) {
                    var label = sources[0].getProperty().modelProperty.label;
                    var sourceVar = 'var_'+label;
                    matLab = matLab.replace(reg,sourceVar);
                }

                var lastIndex = index;
                index = matLab.indexOf('@');
                if(lastIndex == index){
                    break;
                }
            }
        }

        if (this.getOutConns().getSize() <= 0) {
            bOut = false;
        }
        
        if (matLab.indexOf('BERCalculation_Biterr') >= 0) {
            variable = 'ber_' + this.getProperty().modelProperty.label;
            bEnd = false;
            bOut = true;
        }
        if(matLab.indexOf(variable)>=0){
            result = (bOut?matLab:'')+(bEnd?';':'')+'\n';
        }else{
            result =  (bOut?(variable + ' = '):'')+matLab+(bEnd?';':'')+'\n';
        }
        return result;
    },
});